package com.yonyou.cyxdms.basedata.client.service.basedata;

import com.yonyou.cyx.framework.bean.dto.framework.RestResultResponse;
import com.yonyou.cyxdms.basedata.client.domains.vo.VehicleInfoVO;
import com.yonyou.cyxdms.basedata.client.domains.vo.VsMasterInfoVO;
import com.yonyou.cyxdms.basedata.client.domains.vo.VsOptionVO;
import com.yonyou.cyxdms.basedata.client.domains.vo.VsProductVO;
import com.yonyou.cyxdms.basedata.client.dto.CmsApp04;
import com.yonyou.cyxdms.basedata.client.dto.CmsApp04QueryDto;
import com.yonyou.cyxdms.basedata.client.dto.VsProductDlrVO;
import com.yonyou.cyxdms.basedata.client.dto.option.VsOptionDTO;
import com.yonyou.cyxdms.basedata.client.dto.product.VehicleInfoDTO;
import com.yonyou.cyxdms.basedata.client.dto.wholesales.PlanTemplateDTO;
import org.springframework.web.bind.annotation.PostMapping;

import java.util.List;

/**
 * 整车产品
 *
 * @author dengqiang
 * @since 2019/8/22
 */
public interface BaseCommonVsProductService {

    /**
     * 根据id查询车辆主数据(tm_vs_product、tm_vs_product_price)
     *
     * @param productId
     * @return com.yonyou.cyxdms.basedata.service.vo.productinfo.VsMasterInfoVO
     * @author dengqiang
     * @since 2019/8/23
     */
    VsMasterInfoVO queryProductInfoById(Long productId);

    /**
     * 根据id查询车辆主数据(tm_vs_product)
     *
     * @param productId
     * @return com.yonyou.cyxdms.basedata.client.domains.vo.VsMasterInfoVO
     * @author renwd
     * @since 2019/12/7
     */
    VsMasterInfoVO getProductInfoById(Long productId);

    /**
     * TCC获取车辆主数据
     *
     * @author ysj
     * @date 2019/11/19
     * @param productId
     * @return
     */
    VsMasterInfoVO queryTccProductInfoById(Long productId);

    /**
     * 根据名称查询产品配置ID
     *
     * @author ysj
     * @date 2019/10/21
     * @param vehicleInfoDTO
     * @return
     */
    VehicleInfoVO getVehicleInfoByName(VehicleInfoDTO vehicleInfoDTO);

    /**
     * 通过产品代码查出productIds
     *
     * @param productCode
     * @return java.util.List<java.lang.Long>
     * @author dengqiang
     * @since 2019/10/22
     */
    List<Long> queryProductIdsBy(String productCode);

    /**
     * 获取产品信息
     * @param vsOptionDTO
     * @return
     */
    List<VsProductVO> getproductInfo(VsOptionDTO vsOptionDTO);

    /**
     * 获取产品信息[无分页]
     * @param vsOptionDTO
     * @return
     */
    List<VsProductVO> getInfoList(VsOptionDTO vsOptionDTO);

    /**
     * 获取需求计划模板信息列表
     *
     * @param productCodes 产品代码
     * @author lyz
     * @date 2020/11/10
     */
    List<PlanTemplateDTO> getPlanTemplates(List<String> productCodes);



    /**
     * CmsApp04接口
     *
     * @param cmsApp04QueryDto 查询条件
     * @author  xyy
     * @date  2021/01/19
     */
    CmsApp04 searchCmsApp04Data(CmsApp04QueryDto cmsApp04QueryDto) ;

    /**
     * 获取产品信息
     *
     * @param productCode
     * @return java.util.List<com.yonyou.cyxdms.basedata.client.domains.vo.VsProductVO>
     * @author caozx
     * @since 2021/01/28
     */
    VsProductVO getProduct(String productCode);

    /**
     * 获取产品信息
     *
     * @param productCode
     * @return com.yonyou.cyxdms.basedata.client.dto.VsProductDlrVO
     * @author caozx
     * @since 2021/02/22
     */
    VsProductDlrVO getProductNew(String productCode);
}
